home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / xa / ElementDiagramModel.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  5.5 KB  |  168 lines

  1. package com.extensibility.xa;
  2.  
  3. import com.extensibility.rock.diagram.DiagramDataModel;
  4. import com.extensibility.rock.diagram.DiagramDataNode;
  5. import com.extensibility.xml.ContentModel;
  6. import com.extensibility.xml.ContentModelTerm;
  7. import com.extensibility.xml.ContentModelTermEnum;
  8. import com.extensibility.xml.DeclarationChangeEvent;
  9. import com.extensibility.xml.ElementDeclaration;
  10. import java.util.Enumeration;
  11. import java.util.EventObject;
  12.  
  13. public final class ElementDiagramModel extends DiagramDataModel implements SchemaDocListener {
  14.    SchemaDoc doc;
  15.  
  16.    SchemaDoc getSchemaDoc() {
  17.       return this.doc;
  18.    }
  19.  
  20.    void handleDeclChange(DeclarationChangeEvent var1) {
  21.       if (((EventObject)var1).getSource() instanceof ElementDeclaration) {
  22.          ElementDeclaration var2 = (ElementDeclaration)((EventObject)var1).getSource();
  23.          if (var1.getWhich() != 31 && var1.getWhich() != 21 && var1.getWhich() != 22 && var1.getWhich() != 35) {
  24.             if (var1.getWhich() == 1) {
  25.                ((DiagramDataModel)this).fireDiagramModelEvent(5);
  26.             } else if (var1.getWhich() == 26) {
  27.                ((DiagramDataModel)this).updateConnector((ContentModelTerm)((EventObject)var1).getSource(), ((ContentModelTerm)((EventObject)var1).getSource()).getChildConnection());
  28.                ((DiagramDataModel)this).fireDiagramModelEvent(6);
  29.             }
  30.          } else {
  31.             this.updateRoot(var2);
  32.          }
  33.  
  34.       }
  35.    }
  36.  
  37.    public ElementDiagramModel(SchemaDoc var1) {
  38.       this.doc = var1;
  39.       ((DiagramDataModel)this).init();
  40.       this.doc.addDocumentListener(this);
  41.    }
  42.  
  43.    protected Enumeration getRoots() {
  44.       return this.doc.getElementDeclarations();
  45.    }
  46.  
  47.    public void updateRoot(Object var1) {
  48.       super.updateRoot(var1);
  49.       ElementDeclaration var2 = (ElementDeclaration)var1;
  50.       Enumeration var3 = ((DiagramDataModel)this).getRootNodes();
  51.  
  52.       while(var3.hasMoreElements()) {
  53.          DiagramElementNode var4 = (DiagramElementNode)var3.nextElement();
  54.          ElementDeclaration var5 = var4.getSourceElement();
  55.          if (var5 != null && var5.getSuperType() != null && var5.getSuperType().getTargetObj() == var2) {
  56.             this.updateRoot(var5);
  57.          }
  58.       }
  59.  
  60.    }
  61.  
  62.    public String getRootName(Object var1) {
  63.       return ((ElementDeclaration)var1).getName();
  64.    }
  65.  
  66.    public char getRootConnector(Object var1) {
  67.       ContentModel var2 = ((ElementDeclaration)var1).getEffectiveModel();
  68.       return ((ContentModelTerm)var2).isGroup() ? ((ContentModelTerm)var2).getChildConnection() : '\u0000';
  69.    }
  70.  
  71.    protected void createChildNodes(DiagramDataNode var1, Object var2) {
  72.       ElementDeclaration var3 = (ElementDeclaration)var2;
  73.       ContentModel var4 = var3.getEffectiveModel();
  74.       if (!var4.isAny() && !var4.isEmpty()) {
  75.          if (var4.getRootGroup() != null) {
  76.             this.createChildNodes((ElementDeclaration)var2, (DiagramXANode)var1, var4.getRootGroup(), true);
  77.          } else {
  78.             this.createChildNodes((ElementDeclaration)var2, (DiagramXANode)var1, var4, true);
  79.          }
  80.       }
  81.  
  82.    }
  83.  
  84.    protected void createChildNodes(ElementDeclaration var1, DiagramXANode var2, ContentModelTerm var3, boolean var4) {
  85.       DiagramXANode var5 = null;
  86.       if (!var3.isPCDATATerm()) {
  87.          if (var3.isGroup()) {
  88.             DiagramXANode var6 = var2;
  89.             if (!var4 || var3.getOccurance() != 0) {
  90.                var5 = (DiagramXANode)this.createDiagramDataNode(var3, var2, var3.getChildConnection(), var3.getOccuranceAsString(true, true, true));
  91.                var6 = var5;
  92.             }
  93.  
  94.             ContentModelTermEnum var7 = var3.getTerms(true);
  95.  
  96.             while(var7.hasMoreElements()) {
  97.                this.createChildNodes(var1, var6, var7.nextContentModelTerm(), false);
  98.             }
  99.          } else {
  100.             var5 = (DiagramXANode)this.createDiagramDataNode(var3, var2, var3.getConnection(), var3.getOccuranceAsString(true, true, true));
  101.          }
  102.  
  103.          if (var5 != null && var3.getOwner() != var1) {
  104.             var5.setForeign(true);
  105.          }
  106.  
  107.       }
  108.    }
  109.  
  110.    protected DiagramDataNode createDiagramDataNode(Object var1, DiagramDataNode var2, char var3, String var4) {
  111.       Object var5 = null;
  112.       if (var1 instanceof ContentModelTerm) {
  113.          ContentModelTerm var6 = (ContentModelTerm)var1;
  114.          if (var6.isGroup()) {
  115.             var5 = new DiagramTermNode(this, (DiagramXANode)var2, var6, var3, var4);
  116.          } else {
  117.             var5 = new DiagramTypeNode(this.doc, this, (DiagramXANode)var2, var6.getTermRef(), var3, var4);
  118.          }
  119.  
  120.          if (var6.getLocalTag() != null) {
  121.             ((DiagramXANode)var5).setLocalTag(var6.getLocalTag());
  122.          }
  123.       } else if (var1 instanceof ElementDeclaration) {
  124.          var5 = new DiagramElementNode(this, (DiagramXANode)var2, (ElementDeclaration)var1, var3, var4);
  125.       }
  126.  
  127.       return (DiagramDataNode)var5;
  128.    }
  129.  
  130.    public void flavorChanged(SchemaDocEvent var1) {
  131.    }
  132.  
  133.    public void declarationRemoved(SchemaDocEvent var1) {
  134.       if (var1.getDeclaration() instanceof ElementDeclaration) {
  135.          ((DiagramDataModel)this).rootRemoved(var1.getDeclaration());
  136.       }
  137.  
  138.    }
  139.  
  140.    public void declarationInserted(SchemaDocEvent var1) {
  141.       if (var1.getDeclaration() instanceof ElementDeclaration) {
  142.          ((DiagramDataModel)this).rootInserted(var1.getDeclaration());
  143.       }
  144.  
  145.    }
  146.  
  147.    public void declarationListChanged(SchemaDocEvent var1) {
  148.       ((DiagramDataModel)this).rootListChanged();
  149.    }
  150.  
  151.    public void declarationListReordered(SchemaDocEvent var1) {
  152.    }
  153.  
  154.    public void declarationChanged(SchemaDocEvent var1, DeclarationChangeEvent var2) {
  155.       this.handleDeclChange(var2);
  156.    }
  157.  
  158.    protected DiagramDataNode getRootNode(Object var1) {
  159.       DiagramDataNode var2 = super.getRootNode(var1);
  160.       if (var2 == null && var1 != null && var1 instanceof ElementDeclaration) {
  161.          ((DiagramDataModel)this).createRoot(var1);
  162.          return super.getRootNode(var1);
  163.       } else {
  164.          return var2;
  165.       }
  166.    }
  167. }
  168.